/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.upn.sigemfi.vfi.beans;

import edu.upn.sigemfi.plt.be.Cuenta;
import edu.upn.sigemfi.plt.be.DetalleCuentaCliente;
import edu.upn.sigemfi.seg.be.PersonaJuridica;
import edu.upn.sigemfi.seg.be.PersonaNatural;
import edu.upn.sigemfi.vfi.bc.CuentaClienteDelegate;
import edu.upn.sigemfi.vfi.bc.CuentaDelegate;
import edu.upn.sigemfi.vfi.bc.DetalleTransaccionDelegate;
import edu.upn.sigemfi.vfi.bc.PersonaDelegate;
import edu.upn.sigemfi.vfi.be.DetalleTransaccion;
import java.util.List;

/**
 *
 * @author Alex
 */
public class ConsultasController extends AbstractController {

    private String tipoOperacion;
    private String nroCuenta;
    private CuentaDelegate delegadoCuenta;
    private DetalleTransaccionDelegate delegadoDetalleTransaccion;
    private Cuenta cuenta;
    private DetalleTransaccion detalleTransaccion;
    private PersonaNatural natural;
    private PersonaJuridica juridica;
    //sa
    private DetalleCuentaCliente cuentaCliente;
    private CuentaClienteDelegate delegadoCuentaCliente;
    private PersonaNatural personaNatural;
    private PersonaDelegate delegadoPersonaNatural;
    private PersonaJuridica personaJuridica;
    private PersonaDelegate delegadoPersonaJuridica;
    //tipo dcoumento y nro doc
    private String tipoDocumento;
    private String nroDocumento;
    private String titular;
    private String estilo;

    public ConsultasController() {
        delegadoCuenta = new CuentaDelegate();
        delegadoDetalleTransaccion = new DetalleTransaccionDelegate();
        delegadoCuentaCliente = new CuentaClienteDelegate();
        delegadoPersonaNatural = new PersonaDelegate();
        delegadoPersonaJuridica = new PersonaDelegate();
    }

 

    public List<DetalleTransaccion> getMovimientos() {
        try {
            cuenta = delegadoCuenta.buscarPorNroCuenta(nroCuenta);
            // getdatosCliente(cuenta);
            //  delegadoCuenta.


            return delegadoDetalleTransaccion.BuscarMovimientosPorCuenta(cuenta);

        } catch (Exception e) {
            error(e.getMessage());
        }


        return null;
    }

    public void getdatosCliente(Cuenta cuentaBuscada) throws Exception {
        try {



            setCuentaCliente(delegadoCuentaCliente.buscarPorCuenta(cuentaBuscada));


            if (getCuentaCliente().getPersona().getXtipo().equals("PEN")) {

                setTipoDocumento("DNI");
                buscarPersona(getCuentaCliente().getPersona().getIdPersona(), "PEN");
                setNroDocumento(getPersonaNatural().getDniPersona());
                setTitular(getPersonaNatural().getApePaternoPersona() + " " + getPersonaNatural().getApeMaternoPersona() + " " + getPersonaNatural().getNombrePersona());


            } else {

                setTipoDocumento("RUC");
                buscarPersona(getCuentaCliente().getPersona().getIdPersona(), "PEJ");
                setNroDocumento(getPersonaJuridica().getRuc());
                setTitular(getPersonaJuridica().getRazonSocial());
            }




        //  delegado.buscarPorNroCuenta(nroCuenta);//local.find(codigo);


        //   return cuentaCliente;
        } catch (Exception e) {
            //    local = lookupCuentaFacade();

            error(e.getMessage().toString());

        //    throw new Exception("Buscar por nro de Cuenta. " + e.getMessage(), e);
        //   return null;
        }
    }

    public void buscarPersona(Long codigo, String tipo) {
        try {

            if (tipo.equals("PEN")) {
                setPersonaNatural(delegadoPersonaNatural.buscarPersonaNatural(codigo));

            } else {
                setPersonaJuridica(delegadoPersonaJuridica.buscarPersonaJuridica(codigo));
            }

        } catch (Exception e) {
            error(e.getMessage().toString());
        }
    // return null;
    }

    /**
     * @return the tipoOperacion
     */
    public String getTipoOperacion() {
        return tipoOperacion;
    }

    /**
     * @param tipoOperacion the tipoOperacion to set
     */
    public void setTipoOperacion(String tipoOperacion) {
        this.tipoOperacion = tipoOperacion;
    }

    public String Operacion() {

        try {
            cuenta = delegadoCuenta.buscarPorNroCuenta(nroCuenta);
            getdatosCliente(cuenta);

        } catch (Exception er) {

            error(er.getMessage());
        }

        return tipoOperacion;
    }

    /**
     * @return the nroCuenta
     */
    public String getNroCuenta() {
        return nroCuenta;
    }

    /**
     * @param nroCuenta the nroCuenta to set
     */
    public void setNroCuenta(String nroCuenta) {
        this.nroCuenta = nroCuenta;
    }

    /**
     * @return the cuenta
     */
    public Cuenta getCuenta() {
        return cuenta;
    }

    /**
     * @param cuenta the cuenta to set
     */
    public void setCuenta(Cuenta cuenta) {
        this.cuenta = cuenta;
    }

    /**
     * @return the detalleTransaccion
     */
    public DetalleTransaccion getDetalleTransaccion() {
        return detalleTransaccion;
    }

    /**
     * @param detalleTransaccion the detalleTransaccion to set
     */
    public void setDetalleTransaccion(DetalleTransaccion detalleTransaccion) {
        this.detalleTransaccion = detalleTransaccion;
    }

    /**
     * @return the natural
     */
    public PersonaNatural getNatural() {
        return natural;
    }

    /**
     * @param natural the natural to set
     */
    public void setNatural(PersonaNatural natural) {
        this.natural = natural;
    }

    /**
     * @return the juridica
     */
    public PersonaJuridica getJuridica() {
        return juridica;
    }

    /**
     * @param juridica the juridica to set
     */
    public void setJuridica(PersonaJuridica juridica) {
        this.juridica = juridica;
    }

    /**
     * @return the cuentaCliente
     */
    public DetalleCuentaCliente getCuentaCliente() {
        return cuentaCliente;
    }

    /**
     * @param cuentaCliente the cuentaCliente to set
     */
    public void setCuentaCliente(DetalleCuentaCliente cuentaCliente) {
        this.cuentaCliente = cuentaCliente;
    }

    /**
     * @return the personaNatural
     */
    public PersonaNatural getPersonaNatural() {
        return personaNatural;
    }

    /**
     * @param personaNatural the personaNatural to set
     */
    public void setPersonaNatural(PersonaNatural personaNatural) {
        this.personaNatural = personaNatural;
    }

    /**
     * @return the personaJuridica
     */
    public PersonaJuridica getPersonaJuridica() {
        return personaJuridica;
    }

    /**
     * @param personaJuridica the personaJuridica to set
     */
    public void setPersonaJuridica(PersonaJuridica personaJuridica) {
        this.personaJuridica = personaJuridica;
    }

    /**
     * @return the tipoDocumento
     */
    public String getTipoDocumento() {
        return tipoDocumento;
    }

    /**
     * @param tipoDocumento the tipoDocumento to set
     */
    public void setTipoDocumento(String tipoDocumento) {
        this.tipoDocumento = tipoDocumento;
    }

    /**
     * @return the nroDocumento
     */
    public String getNroDocumento() {
        return nroDocumento;
    }

    /**
     * @param nroDocumento the nroDocumento to set
     */
    public void setNroDocumento(String nroDocumento) {
        this.nroDocumento = nroDocumento;
    }

    /**
     * @return the titular
     */
    public String getTitular() {
        return titular;
    }

    /**
     * @param titular the titular to set
     */
    public void setTitular(String titular) {
        this.titular = titular;
    }

    /**
     * @return the estilo
     */
    public String getEstilo() {
        return estilo;
    }

    /**
     * @param estilo the estilo to set
     */
    public void setEstilo(String estilo) {
        this.estilo = estilo;
    }
}
